package com.jt.controller;

import com.jt.service.FileService;
import com.jt.vo.ImageVO;
import com.jt.vo.SysResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;

@RestController
@CrossOrigin
@RequestMapping("/file")
public class FileController {
    @Autowired
    private FileService fileService;

    //文件上传业务接口
    /**
     * MultipartFile是SpringMVC针对IO操作开发的
     * 底层实现的就是常规IO流，简化了用户的操作过程，无需手动关流
     * SpringMVC中默认支持最大1M
     * 步骤：
     *   1.获取文件名称
     *   2.准备文件路径
     *   3.准备文件上传的全路径
     *   4.实现文件上传操作
     * */
    @PostMapping("/upload")
    public SysResult fileUpload(MultipartFile file){
        ImageVO imageVO=fileService.upload(file);
        if(imageVO==null){
            return SysResult.fail();
        }
        return SysResult.success(imageVO);
    }

    //@PostMapping("/upload")
    public SysResult upload(MultipartFile file) throws IOException {
        //1.获取文件名称
        String fileName = file.getOriginalFilename();
        //2.准备文件目录
        String dir="F:/project3/images";//文件根目录
        File dirFile=new File(dir);//将根目录对象化
        if(!dirFile.exists()){//判断目录是否存在
            dirFile.mkdirs();//创建多级目录
        }
        String path=dir+"/"+fileName;//文件全路径
        //实现文件上传
        file.transferTo(new File(path));
        return SysResult.success();
    }

    //文件删除业务接口
    @DeleteMapping("/deleteFile")
    public SysResult deleteFile(String virtualPath){
        fileService.deleteFile(virtualPath);
        return SysResult.success();
    }
}
